隔離環境就靠它! (⁎⁍̴̛ᴗ⁍̴̛⁎)
A自告奮勇,把負責的系統先部署上去了:
一切都很順利,系統也運行的好好的。
團隊決定把 B 系統也部署上去。
運行了一段時間,相安無事。
不過近期,系統A的流量因為行銷活動開始增加。所幸當初設定有做好自動擴展機制,倒也沒什麼問題,系統照常運行。
又過了兩天,B 系統的負責人發現不對勁了。
最近常接到使用者反應系統速度變慢了。
一檢查之下發現,Cluster 的資源被系統 A 吃到自己的系統連一個 Pod 都加不上去 ಠ_ಠ
... 欸不是。
這位鄰居你有沒有禮貌?!
就這樣把資源直接吃光?蛤!?
對啦你是運行的好好的但我這邊出問題了啊!!!
強烈要求做個圍牆!以後我們井水不犯河水!
這就是 Namespace
的主要功能:Cluster 中的環境區分。
透過資源隔離 ,開發團隊就可以在 Cluster 中做各種配置和操作,而不需要擔心影響到 Cluster 中的其他系統。不但可以將不同的服務、團隊或專案隔離開來,還能避免資源衝突和意外的相互影響。
Kubernetes 本身其實也有預設的 Namespace:
實務上的小提醒:
建立 Namespace 時避開
kube-
,這個前綴通常是 Kubernetes 系統在使用
非常不建議在 kube-system 中部署自定義應
對 kube-system 中的資源進行修改時要特別小心,可能會影響整個集群的穩定性
當然,環境隔離的好處不只有開頭舉例的資源分配,還有其他使用情境:
資源管理
Namespace 中可以設定資源配置,設定對象為 Pod,設定方式包含Limit、Requests、LimitRange
當 Pod 沒有設定資源限制,會套用 Limit 和 Requests;
反之則需滿足 LimitRange 限制,否則無法啟動。
安全性機制
Namespace 結合 Kubernetes 的角色控制(RBAC, Role-Based Access Control),可以用來限制帳戶對資源的訪問權限,從而提高系統安全性。
避免命名衝突
在不同的 Namespace 中,可以使用相同的資源名稱而不會發生衝突(同一個 Namespace 中需唯一)
環境分離
可以輕鬆地在同一個 Cluster 中隔離開發、測試和正式環境
成本效益
透過在同一個 Cluster 中運行多個分區,可以最有效地利用硬體資源
多用戶場景
常見於大型組織或雲服務供應商中,當需要在同一個 Cluster 上為多個客戶或團隊提供服務。Namespace 能確保每個用戶都擁有自己的獨立空間。
Namespace 是一種邏輯隔離機制,它讓不同團隊和專案能夠共享同一個 Cluster,並保持獨立運行互不干擾。透過 Namespace,可以有效地組織和管理 Cluster 資源,並且能輕鬆實現資源額度配置和權限控管,確保每個環境中的服務能夠安全、高效地運行。